package com.mastercard.assets.web.util.to;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import com.mastercard.assets.jpa.TblAsset;
import com.mastercard.assets.jpa.TblCuenta;
import com.mastercard.assets.jpa.TblCuentaPaquete;
import com.mastercard.assets.jpa.TblPaquete;
import com.mastercard.assets.jpa.TblTipoCuentaPaquete;

public class PaqueteAutorizado
	implements
		Serializable
{
	private List< TblCuentaPaquete > paquetesAsignadosACuenta = new ArrayList< TblCuentaPaquete >( ) ;

	private int cantidadOcupada ;
	private int cantidadDisponible ;
	private int tipoHabitacion = 1 ;
	private TblAsset evento ;
	private int cveCuenta ;
	
	public int getCveCuenta() {
		return cveCuenta;
	}

	public void setCveCuenta(int cveCuenta) {
		this.cveCuenta = cveCuenta;
	}

	public PaqueteAutorizado( int tipoHabitacion , TblAsset evento , int cveCuenta )
	{
		this.evento = evento ;
		this.tipoHabitacion = tipoHabitacion ;
		this.cveCuenta = cveCuenta ;
	}

	public int getTipoHabitacion() {
		return tipoHabitacion;
	}

	public void setTipoHabitacion(int tipoHabitacion) {
		this.tipoHabitacion = tipoHabitacion;
	}

	public TblAsset getEvento() {
		return evento;
	}

	public void setEvento(TblAsset evento) {
		this.evento = evento;
	}
	
	public boolean verifyPackage( TblCuentaPaquete paq )
	{
		// en caso de uqe este en null el evento
		if( evento == null )
			return false ;
		
		if( paq.getStatus( ) == 0 )
			return false ;
		
		// obtiene el paquete
		TblPaquete paquete = paq.getTblPaquete( ) ;
		
		// toma el evento
		TblAsset eventoPaq = paquete.getTblAsset( ) ;
		
		// compara ids, si no son iguales
		if( eventoPaq.getCveAsset( ) != evento.getCveAsset( ) )
			return false ;
		// si son iguales
		else
		{
			// compara el numero de habitaciones
			if( paquete.getHabitacion( ) == tipoHabitacion )
				return true ;
			else
				return false ;
		}
	}
	
	public boolean addPackageCount( TblCuentaPaquete paq )
	{
		// en caso de que si sea del mismo asset
		if( verifyPackage( paq ) )
		{
			// asigna a los paquetes asignados
			paquetesAsignadosACuenta.add( paq ) ;
				
			int bandera = paq.getBandera( ) ;
			
			// en caso de que este en campania
			if( bandera == 2 )
				cantidadOcupada ++ ;
			// en caso de que este en 1 o en 3
			else if( bandera == 1 || bandera == 3 )
				cantidadDisponible ++ ;
			
			return true ;
		}
		// en caso d eque no  coincida
		else
			return false ;
	}
	
	public int getCantidadOcupada( )
	{
		return cantidadOcupada ;
	}
	
	public int getCantidadDisponible( )
	{
		return cantidadDisponible ;
	}
	
	public int getCantidadAsignada( )
	{
		// regresa el numero de paquetes
		return paquetesAsignadosACuenta.size( ) ;
	}
	
	public List<TblCuentaPaquete> getPaquetesAsignadosACuenta() {
		return paquetesAsignadosACuenta;
	}
}
